﻿
namespace RIAExample.Web.Services
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Data;
    using System.Linq;
    using System.ServiceModel.DomainServices.EntityFramework;
    using System.ServiceModel.DomainServices.Hosting;
    using System.ServiceModel.DomainServices.Server;
    using RIAExample.Web.Models;

    [EnableClientAccess()]
    public class SupermercadoDomainService : LinqToEntitiesDomainService<SupermercadoEntities>
    {
        public IQueryable<Produto> GetProdutoes()
        {
            return this.ObjectContext.Produtoes.Include("Supermercado");
        }

        public void InsertProduto(Produto produto)
        {
            if ((produto.EntityState != EntityState.Detached))
            {
                this.ObjectContext.ObjectStateManager.ChangeObjectState(produto, EntityState.Added);
            }
            else
            {
                this.ObjectContext.Produtoes.AddObject(produto);
            }
        }

        public void UpdateProduto(Produto currentProduto)
        {
            this.ObjectContext.Produtoes.AttachAsModified(currentProduto, this.ChangeSet.GetOriginal(currentProduto));
        }

        public void DeleteProduto(Produto produto)
        {
            if ((produto.EntityState == EntityState.Detached))
            {
                this.ObjectContext.Produtoes.Attach(produto);
            }
            this.ObjectContext.Produtoes.DeleteObject(produto);
        }

        public IQueryable<Supermercado> GetSupermercadoes()
        {
            return this.ObjectContext.Supermercadoes;
        }

        public void InsertSupermercado(Supermercado supermercado)
        {
            if ((supermercado.EntityState != EntityState.Detached))
            {
                this.ObjectContext.ObjectStateManager.ChangeObjectState(supermercado, EntityState.Added);
            }
            else
            {
                this.ObjectContext.Supermercadoes.AddObject(supermercado);
            }
        }

        public void UpdateSupermercado(Supermercado currentSupermercado)
        {
            this.ObjectContext.Supermercadoes.AttachAsModified(currentSupermercado, this.ChangeSet.GetOriginal(currentSupermercado));
        }

        public void DeleteSupermercado(Supermercado supermercado)
        {
            if ((supermercado.EntityState == EntityState.Detached))
            {
                this.ObjectContext.Supermercadoes.Attach(supermercado);
            }
            this.ObjectContext.Supermercadoes.DeleteObject(supermercado);
        }
    }
}


